Plugins/Community Based Plugins/Microsoft Defender XDR Custom Plugin Scenarios/EnrichmentPlugins/IncidentEnrichment.yaml (108 lines of code) (raw):

Descriptor: Name: Incident Enrichment Skills DisplayName: Incident Enrichment Skills DescriptionForModel: |- - A set of KQL-based skills designed to enhance incident investigations by: - Correlating and retrieving alerts associated with a specific incident using the `IncidentId`. - Enabling targeted searches through alert titles to refine results and focus investigations. - Retrieving all alerts tied to an incident for comprehensive review, including key details like timestamps, alert names, IDs, and severity levels. - Providing actionable insights to support efficient incident analysis and response. Description: A set of KQL-based skills for correlating and retrieving alerts linked to specific incidents, offering detailed insights to enhance focused investigations and response efforts. SupportedAuthTypes: - None Settings: - Name: TenantId Label: TenantId Description: Your Azure TenantId HintText: TenantId SettingType: String Required: true - Name: SubscriptionName Label: SubscriptionName Description: This is the subscription name that security copilot will use for Sentinel. HintText: yoursubscriptionname SettingType: String Required: true - Name: WorkspaceName Label: WorkspaceName Description: This is the workspace name that security copilot will use for Sentinel. HintText: yourworkspace SettingType: String Required: true - Name: ResourceGroupName Label: ResourceGroupName Description: This is the resource group name that security copilot will use for Sentinel. HintText: yourresourcegroup SettingType: String Required: true SkillGroups: - Format: KQL Skills: - Name: AlertTitleToIncidentCorrelation DisplayName: Alert Title Search to Incident Correlation DescriptionForModel: |- Performs a KQL query on the `SecurityAlert` table to correlate alerts with a specified `IncidentId`. Key features include: - **Alert Association**: Retrieves alerts linked to the incident ID and filters by alert title if specified. - **Alert Summary**: Counts the total number of alerts and lists up to 10 `AlertNames` for an overview. - **Search Refinement**: Recommends refining the search by specifying an `AlertName` if more than 10 alerts are found. This skill enables users to efficiently correlate alerts with incidents, identify patterns, and refine investigations for deeper insights into potential threats. Provides actionable recommendations to focus the search on relevant alerts. Description: Retrieve alerts associated with a specified incident ID and provide an overview of alert titles. Suggest search refinement by alert name if more than 10 alerts are found, enabling efficient correlation and targeted investigation. Inputs: - Name: IncidentId Description: The unique identifier of the incident to search for associated alerts. Example "1337" Required: true - Name: AlertName Description: A specific alert name to refine the search. Example "Suspicious Microsoft Defender AntiVirus exclusion" Default: "" Required: false Settings: Target: Sentinel TenantId: "{{TenantId}}" SubscriptionName: "{{SubscriptionName}}" ResourceGroupName: "{{ResourceGroupName}}" WorkspaceName: "{{WorkspaceName}}" Template: |- let recordCount = toscalar( SecurityAlert | extend ExtendedPropertiesJson = parse_json(ExtendedProperties) | extend EntitiesJson = parse_json(Entities) | where ExtendedPropertiesJson.IncidentId == "{{IncidentId}}" | where isempty("{{AlertName}}") or AlertName contains "{{AlertName}}" | summarize count() ); SecurityAlert | extend ExtendedPropertiesJson = parse_json(ExtendedProperties) | extend EntitiesJson = parse_json(Entities) | where ExtendedPropertiesJson.IncidentId == "{{IncidentId}}" | where isempty("{{AlertName}}") or AlertName contains "{{AlertName}}" | project AlertName | limit iff(recordCount > 10, 10, recordCount) | summarize Alerts = make_list(AlertName) | project DistinctAlertTitles = Alerts, Count = recordCount | extend Recommendation = iff(Count > 10, "Consider refining the search using the AlertName variable.", "") - Name: IncidentAlertRetrieval DisplayName: Retrieve Alerts for an Incident DescriptionForModel: |- Performs a KQL query on the `SecurityAlert` table to retrieve all alerts linked to a specified `IncidentId`. Key details include: - **`TimeGenerated`**: Timestamp indicating when the alert was generated. - **`AlertId`**: Unique identifier for each alert. - **`AlertName`**: Name of the alert. - **`Severity`**: Severity level of the alert. This skill enables a complete review of all alerts associated with an incident, helping security analysts understand the scope and context of the incident for effective analysis and response. Description: Retrieve all alerts associated with a specific incident ID. Provides comprehensive details, including timestamp, unique alert ID, alert name, and severity level, to support in-depth incident investigations. Inputs: - Name: IncidentId Description: The unique identifier of the incident to retrieve all associated alerts. Example "2807" Required: true Settings: Target: Sentinel TenantId: "{{TenantId}}" SubscriptionName: "{{SubscriptionName}}" ResourceGroupName: "{{ResourceGroupName}}" WorkspaceName: "{{WorkspaceName}}" Template: |- SecurityAlert | extend ExtendedPropertiesJson = parse_json(ExtendedProperties) | extend EntitiesJson = parse_json(Entities) | where ExtendedPropertiesJson.IncidentId == "{{IncidentId}}" | distinct TimeGenerated, SystemAlertId, AlertName, AlertSeverity